
package net.lcheng.commons.utils;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

/**
 * Created by qiliping on 15/12/22.
 */

public class HttpClientUtils {

    private final static String serverUrl = "http://222.73.117.158/msg/HttpBatchSendSM";
    private final static String account = "zhongtou-01";
    private final static String password = "Txb123456";
    private final static String needstatus = "true";


    /***
     * http请求
     * @param strURL
     * @return
     */
    public static String getJson(String strURL) {

        try {
            URL url = new URL(strURL);// 创建连接
            HttpURLConnection connection = (HttpURLConnection) url
                    .openConnection();
            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setUseCaches(false);
            connection.setInstanceFollowRedirects(true);
            connection.setRequestMethod("GET"); // 设置请求方式
            connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式
            connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式
            connection.connect();
            OutputStreamWriter out = new OutputStreamWriter(
                    connection.getOutputStream(), "UTF-8"); // utf-8编码
//            out.append(params);
            out.flush();
            out.close();
            // 读取响应
            int length = (int) connection.getContentLength();// 获取长度
            InputStream is = connection.getInputStream();
            if (length != -1) {
                byte[] data = new byte[length];
                byte[] temp = new byte[512];
                int readLen = 0;
                int destPos = 0;
                while ((readLen = is.read(temp)) > 0) {
                    System.arraycopy(temp, 0, data, destPos, readLen);
                    destPos += readLen;
                }
                String result = new String(data, "UTF-8"); // utf-8编码
                System.out.println(result);
                return result;
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return "error"; // 自定义错误信息
    }

    /***
     * post返回json
     * @param url
     * @param param
     * @return
     */
    public static String postJson(String url,String param){
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式
            conn.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式
//            conn.setRequestProperty("accept", "*/*");
//            conn.setRequestProperty("connection", "Keep-Alive");
//            conn.setRequestProperty("user-agent",
//                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(param);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常！"+e);
            e.printStackTrace();
        }
        //使用finally块来关闭输出流、输入流
        finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch(IOException ex){
                ex.printStackTrace();
            }
        }
        return result;
    }


   /*public static int get(String url,String msg) throws IOException {

       url ="http://222.73.117.158/msg/HttpBatchSendSM";

       List<NameValuePair> formparams = new ArrayList<NameValuePair>();
       formparams.add(new BasicNameValuePair("account", "jiekou-clcs-01"));
       formparams.add(new BasicNameValuePair("pswd", "Txb123456"));
       formparams.add(new BasicNameValuePair("mobile", "15818590119"));
       formparams.add(new BasicNameValuePair("msg", msg));
       formparams.add(new BasicNameValuePair("needstatus", "true"));

       HttpEntity reqEntity = new UrlEncodedFormEntity(formparams, "utf-8");

//       HttpGet httpGet = new HttpGet(url);



       RequestConfig requestConfig = RequestConfig.custom()
               .setSocketTimeout(5000)
               .setConnectTimeout(5000)
               .setConnectionRequestTimeout(5000)
               .build();







//       HttpResponse response1 = client.execute(httpGet);
//       response1.getEntity();

       CloseableHttpClient httpclient = HttpClients.createDefault();
       HttpPost post = new HttpPost(url);
       post.setEntity(reqEntity);
       post.setConfig(requestConfig);
       HttpResponse response = httpclient.execute(post);

//       CloseableHttpResponse response1 = httpclient.execute(httpGet);

       if (response.getStatusLine().getStatusCode() == 200) {
           HttpEntity resEntity = response.getEntity();
           String message = EntityUtils.toString(resEntity, "utf-8");
           String[] res = message.split("\n");
           String[] resStatus = res[0].split(",");
           System.out.println(message);
           if(resStatus[1].equals("0")){
               //发送成功
               return 0;
           }else{
               return Integer.valueOf(resStatus[1]);
           }


       } else {
           System.out.println("请求失败");
           return 500;
       }
   }*/
}

